package com.wh.hotel.convert;

import com.wh.hotel.model.*;
import com.wh.hotel.response.HotelBookRuleResponse;
import com.wh.hotel.response.HotelRoomDetailResponse;
import com.wh.hotel.vo.HotelBaseInfoVo;
import com.wh.hotel.vo.HotelListWebVo;
import com.wh.hotel.vo.HotelRoomTypeVo;
import com.wh.hotel.vo.RoomGoodsDetailVo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

@Mapper
public interface HotelStructMapper {


    @Mapping(target = "id", ignore = true)
    @Mapping(target = "createDt", ignore = true)
    @Mapping(target = "updateDt", ignore = true)
    @Mapping(target = "hotelStatus", ignore = true)
    HotelBaseInfo convertToHotelBaseInfo(HotelBaseInfoVo param);

    HotelBaseInfoVo convertToHotelBaseInfoVo(HotelBaseInfo hotelBaseInfo);

    HotelListWebVo convertToHotelListWebVo(HotelBaseInfo hotelBaseInfo);

    HotelBookRuleResponse convertToHotelBookRuleResponse(HotelBookRule hotelBookRule);

    @Mapping(target = "id", ignore = true)
    @Mapping(target = "createDt", ignore = true)
    @Mapping(target = "updateDt", ignore = true)
    HotelRoomType convertToHotelRoomType(HotelRoomTypeVo hotelRoomTypeVo);

    @Mapping(target = "id", ignore = true)
    @Mapping(target = "createDt", ignore = true)
    @Mapping(target = "updateDt", ignore = true)
    HotelRoomTypeRelation convertToHotelRoomTypeRelation(HotelRoomTypeVo hotelRoomTypeVo);

    @Mapping(target = "id", ignore = true)
    HotelRoomDetailResponse convertToHotelRoomDetailResponse(HotelRoomTypeRelation record);

    RoomGoodsDetailVo convertToRoomGoodsDetailVo(HotelRoomTypeGoods goods);
}
